solving polynomial equations